﻿Imports System.Data.SqlClient
Public Class ReservaDAO
    Public Function insertar(ByVal modelo As Reserva) As Reserva
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "INSERT INTO Reserva (idInmueble,idEstudiante,FechaInicio,FechaFin,fechaconfirmacion,TipoPago) VALUES (@VALOR2, @VALOR3, @VALOR4, @VALOR5, @VALOR6, @VALOR7)"

            Dim cmd As New SqlCommand(sql, cn)

            cmd.Parameters.AddWithValue("@VALOR2", modelo.idInmueble)
            cmd.Parameters.AddWithValue("@VALOR3", modelo.idEstudiante)
            cmd.Parameters.AddWithValue("@VALOR4", modelo.FechaInicio)
            cmd.Parameters.AddWithValue("@VALOR5", modelo.FechaFin)
            cmd.Parameters.AddWithValue("@VALOR6", modelo.fechaconfirmacion)
            cmd.Parameters.AddWithValue("@VALOR7", modelo.TipoPago)

            Dim afectados = cmd.ExecuteNonQuery
            If afectados <> 1 Then
                Throw New DAOExcepcion("ReservaDAO: No insertó")
            End If

            ' LEER EL ULTIMO ID
            sql = "SELECT @@IDENTITY"
            cmd = New SqlCommand(sql, cn)
            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            If dr.Read Then
                modelo.idEstudiante = CType(dr(0), Integer)
            End If

            dr.Close()
            cn.Close()

        Catch ex As Exception
            Throw New DAOExcepcion(ex.ToString)
        End Try
        Return modelo

    End Function


    Public Sub actualizar(ByVal modelo As Reserva)
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "UPDATE Reserva SET FechaInicio=@VALOR1, FechaFin=@VALOR2,fechaconfirmacion=@VALOR3, TipoPago=@VALOR4 WHERE  idReserva=@VALOR5"

            Dim cmd As New SqlCommand(sql, cn)

            'cmd.Parameters.AddWithValue("@VALOR0", modelo.idReserva)
            cmd.Parameters.AddWithValue("@VALOR1", modelo.FechaInicio)
            cmd.Parameters.AddWithValue("@VALOR2", modelo.FechaFin)
            cmd.Parameters.AddWithValue("@VALOR3", modelo.fechaconfirmacion)
            cmd.Parameters.AddWithValue("@VALOR4", modelo.TipoPago)
            cmd.Parameters.AddWithValue("@VALOR5", modelo.idReserva)

            Dim afectados = cmd.ExecuteNonQuery

            If afectados <> 1 Then
                Throw New DAOExcepcion("ReservaActualizarDAO: No actualizó")
            End If

            cn.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
            Throw New DAOExcepcion(ex.ToString)
        End Try
    End Sub


    Public Function obtener(ByVal idReserva As Integer) As Reserva
        Dim modelo As New Reserva

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "SELECT idReserva,FechaInicio,FechaFin,fechaconfirmacion,TipoPago FROM Reserva WHERE idReserva=@VALOR1"
            Dim cmd As New SqlCommand(sql, cn)

            cmd.Parameters.AddWithValue("@VALOR1", idReserva)

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            If dr.Read Then
                modelo.idReserva = dr(0).ToString
                modelo.FechaInicio = dr(1).ToString
                modelo.FechaFin = dr(2).ToString
                modelo.fechaconfirmacion = dr(3).ToString
                modelo.TipoPago = dr(4).ToString


            End If

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return modelo
    End Function


    Public Function listar() As Collection
        Dim lista As New Collection
        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "select  distinct Reserva.idReserva,Estudiante.Nombres ,Inmueble.TipoInmueble,Reserva.FechaInicio,Reserva.FechaFin,Reserva.fechaconfirmacion ,Reserva.TipoPago FROM Reserva,Estudiante,CentroEstudio,Inmueble WHERE Estudiante.idEstudiante=Reserva.idEstudiante and Inmueble.idInmueble=Reserva.idInmueble"
            Dim cmd As New SqlCommand(sql, cn)

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()
            While dr.Read
                Dim modelo As New ConsultaReserva


                modelo.idReserva = dr(0).ToString
                modelo.Nombres = dr(1).ToString
                modelo.TipoInmueble = dr(2).ToString
                modelo.FechaInicio = dr(3).ToString
                modelo.FechaFin = dr(4).ToString
                modelo.fechaconfirmacion = dr(5).ToString
                modelo.TipoPago = dr(6).ToString

                'modelo.idReserva = dr(0).ToString
                'modelo.idInmueble = dr(1).ToString
                'modelo.idEstudiante = dr(2).ToString
                'modelo.FechaInicio = dr(3).ToString
                'modelo.FechaFin = dr(4).ToString
                'modelo.fechaconfirmacion = dr(5).ToString
                'modelo.TipoPago = dr(6).ToString

                lista.Add(modelo)
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista
    End Function

    Public Function buscarPorNombre(ByVal TipoPago As String) As Collection
        Dim lista As New Collection

        Try
            Dim cn As New SqlConnection(ConexionBD.obtenerCadenaConexion())
            cn.Open()

            Dim sql = "select  distinct Reserva.idReserva,Estudiante.Nombres ,Inmueble.TipoInmueble,Reserva.FechaInicio,Reserva.FechaFin,Reserva.fechaconfirmacion ,Reserva.TipoPago FROM Reserva,Estudiante,CentroEstudio,Inmueble WHERE Estudiante.idEstudiante=Reserva.idEstudiante and Inmueble.idInmueble=Reserva.idInmueble and upper(TipoPago) like @valor1"
            Dim cmd As New SqlCommand(sql, cn)
            cmd.Parameters.AddWithValue("@VALOR1", "%" + "%" + "%" + "%" + "%" + "%" + TipoPago.ToUpper)

            Dim dr As SqlDataReader
            dr = cmd.ExecuteReader()

            While dr.Read

                Dim modelo As New ConsultaReserva
                modelo.idReserva = dr(0).ToString
                modelo.Nombres = dr(1).ToString
                modelo.TipoInmueble = dr(2).ToString
                modelo.FechaInicio = dr(3).ToString
                modelo.FechaFin = dr(4).ToString
                modelo.fechaconfirmacion = dr(5).ToString
                modelo.TipoPago = dr(6).ToString

                lista.Add(modelo)
               
            End While

            dr.Close()
            cn.Close()

        Catch ex As SqlException
            Throw New DAOExcepcion(ex.ToString)
        End Try

        Return lista
    End Function

End Class

